package xcmg.device.dao.mapper.sale;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import xcmg.device.dao.entity.sale.SalesOutBillDO;
import xcmg.device.dao.entity.sale.SalesOutBillDetailDO;
import xcmg.device.service.vo.delivery.BillDetailMaterialsVO;
import xcmg.device.service.vo.sale.SalesOutBillVO;

import java.math.BigDecimal;
import java.util.List;

@Mapper
@Repository
public interface SalesOutBillDetailMapper {
    int deleteByPrimaryKey(String id);

    int insertSelective(SalesOutBillDetailDO record);

    SalesOutBillDetailDO selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(SalesOutBillDetailDO record);

    BigDecimal getTotalOrderQty(@Param("salesBillNo") String salesNo,@Param("materialNo") String materialNo);

    BigDecimal getCreateOutBillTotal(@Param("salesBillNo") String salesNo,@Param("materialNo") String materialNo);

    BigDecimal getOutboundTotalQty(@Param("salesBillNo") String salesNo,@Param("materialNo") String materialNo);

    int deleteBySalesOutBillNo(@Param("salesBillOutNo") String salesBillOutNo);

    List<SalesOutBillDetailDO> selectBySalesOutBillNo(@Param("salesBillOutNo") String salesBillOutNo);

    int updateStatus(@Param("salesOutBillNo") String salesOutBillNo, @Param("outboundStatus") Integer outboundStatus, @Param("orgId") String orgId,@Param("materialNo") String materialNo);

    SalesOutBillDetailDO selectBySalesBillNoMal(@Param("salesBillOutNo") String salesBillOutNo,@Param("materialNo") String materialNo, @Param("orgId") String orgId);

    List<SalesOutBillDetailDO> selectByBillNoMate(@Param("salesBillOutNo") String salesBillOutNo,@Param("materialNo") String materialNo);

    Integer getCrateQtyBigZeroCount(@Param("salesBillOutNo") String salesBillOutNo);

    List<SalesOutBillDetailDO> getRefundInfo(@Param("salesBillOutNo") String salesBillOutNo);

    int deleteBySalesBillNo(@Param("salesBillNo") String salesBillNo);

    List<BillDetailMaterialsVO> moreBillDetail(@Param("deliveryBillId")String deliveryBillId);

    List<SalesOutBillDetailDO> listDetailByStatus(@Param("orgId")String orgId);
}